const scheduleOrderCheck = require("./check-order");
const scheduleMembershipCheck = require("./check-membership");

const logger = require("../utils/logger");

// 定时任务
// *    *    *    *    *    *
// ┬    ┬    ┬    ┬    ┬    ┬
// │    │    │    │    │    │
// │    │    │    │    │    └ 星期几 (0 - 7) (0 或 7 是星期天)
// │    │    │    │    └───── 月份 (1 - 12)
// │    │    │    └────────── 日期 (1 - 31)
// │    │    └─────────────── 小时 (0 - 23)
// │    └──────────────────── 分钟 (0 - 59)
// └───────────────────────── 秒 (0 - 59, 可选)
// 以空格分隔，共有6位，如果只有5位，表示亿分钟开始

//'0 17 ? * 0,4-6'共五位，以空格隔开，表示
// 0： 表示在第 0 分钟时触发。
// 17： 是说在 17 点（也就是下午 5 点）触发。
// ?： 表示不指定具体的日期，因为在最后面一位，指定了星期几。
// *： 表示每个月都运行。
// 0,4-6： 最后面的这个，0 表示：星期天（0）。4-6 表示：星期四（4）、星期五（5）、和星期六（6）都可以。

// 示例二
// 1 * * * * *表示每分钟的第一秒，所有的不是每隔多少，
// const job = schedule.scheduleJob("1 * * * * *", function () {
//   console.log("Today is recognized by Rebecca Black!");
// });

/**
 * 初始化所有定时任务
 */
function initScheduleTasks() {
  try {
    // 启动订单超时检查任务
    scheduleOrderCheck();

    // 启动会员过期检查任务
    scheduleMembershipCheck();
  } catch (error) {
    logger.error("定时任务启动失败：", error);
  }
}

// 定时任务这里如果数据量很大，然后用类似于分页的思路，分批次来处理数据，避免一次性处理太多数据，导致内存溢出

module.exports = initScheduleTasks;
